﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ehak">
    <xs:complexType>
      <xs:sequence >
        <!-- maakodi võib olla maksimaalselt 90 kuna maakonna kood peab olema unikaalne ja alati kahekohaline integer-->
        <xs:element maxOccurs="90" name="maakond">
          <!-- keelame ära maakonna mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
          <xs:complexType mixed="false">
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="omavalitsus">
                <!-- keelame ära omavalitsuse mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
                <xs:complexType mixed="false">
                  <xs:sequence >
                    <xs:element maxOccurs="unbounded" name="asustusüksus">
                      <!-- keelame ära asustusüksuse mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
                      <xs:complexType mixed="false">
                        <xs:attribute name="nimi" type="xs:string" use="required" />
                        <!-- alati neljakohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                        <xs:attribute name="kood" type="xs:unsignedShort" use="required"></xs:attribute>
                        <!-- alati ühekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                        <xs:attribute name="tüüp" type="xs:unsignedByte" use="required" />
                        <xs:attribute name="tüübinimi" type="xs:string" use="required" />
                        <!-- osadel küladel, kus on suur hulk sisserännanuid (Noarootsi) on kasutusel ka võõrkeelne nimi -->
                        <xs:attribute name="rööpnimi" type="xs:string" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="nimi" type="xs:string" use="required" />
                  <!-- alati kolmekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                  <xs:attribute name="kood" type="xs:unsignedShort" use="required" />
                  <xs:attribute name="tüübinimi" type="xs:string" use="required" />
                </xs:complexType>
                <xs:unique name="UnikaalneAsustusüksuseKood">
                  <xs:selector xpath="asustusüksus" />
                  <xs:field xpath="@kood" />
                </xs:unique>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="nimi" type="xs:string" use="required"/>
            <!-- alati kahekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
            <xs:attribute name="kood" type="xs:unsignedByte" use="required" />
          </xs:complexType>
          <xs:unique name="UnikaalneOmavalitsuseKood">
            <xs:selector xpath="omavalitsus" />
            <xs:field xpath="@kood" />
          </xs:unique>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="UnikaalneMaakonnaKood">
      <xs:selector xpath="maakond" />
      <xs:field xpath="@kood" />
    </xs:unique>
  </xs:element>
</xs:schema>